package dados;

import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverManager;





















import java.util.ArrayList;

import basicas.Administrador;
import basicas.Cartao;
import basicas.Cliente;

public class BancoDeDadosServidorCentral implements IBancoDeDadosServidorCentral {
	
	Conexao conn = new Conexao();
	Statement stm = null;
	
	public void inserirCliente(Cliente novoCliente)
	{	
		try{
			try{
				Connection conexao = conn.Conectar();
				stm = conexao.createStatement();			
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			String sql = "INSERT INTO Cliente(Nome,Sobrenome,Cpf,Senha)VALUES('"+novoCliente.getNome()+"','"+novoCliente.getSobrenome()+"','"+novoCliente.getCpf()+"','"+novoCliente.getSenha()+"')";
			stm.executeUpdate(sql);
			
			System.out.println("Usuario Inserido com Sucesso!");
		}catch(SQLException ex)
		{
			System.out.println(ex);
		}
	}
	public Cliente getCliente(String cpf)
	{
		String nome = null;
		String sobrenome= null;
		String usercpf= null;
		String senha= null;
		try
		{
			try{
				Connection conexao = conn.Conectar();
				stm = conexao.createStatement();			
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			String sql = "SELECT Nome,Sobrenome,Cpf,Senha FROM Cliente WHERE Cpf='"+cpf+"'";
			
			ResultSet rs = stm.executeQuery(sql);
			while(rs.next())
			{
				 nome = rs.getString("Nome");	
				 sobrenome = rs.getString("Sobrenome");
				 usercpf = rs.getString("Cpf");
				 senha = rs.getString("Senha");								
			}			
			
		}
		catch(SQLException ex)
		{
			System.out.println(ex);
		}
		Cliente cliente = new Cliente(nome,sobrenome,usercpf,senha);
		return cliente;
	}
	public Administrador getAdministrador(String cpf)
	{
		String usercpf = null;
		String senha = null;
		try
		{
			try{
				Connection conexao = conn.Conectar();
				stm = conexao.createStatement();			
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			String sql = "SELECT Cpf,Senha FROM Administrador WHERE Cpf='"+cpf+"'";
			
			ResultSet rs = stm.executeQuery(sql);
			while(rs.next())
			{	
				 usercpf = rs.getString("Cpf");
				 senha = rs.getString("Senha");								
			}			
			
		}
		catch(SQLException ex)
		{
			System.out.println(ex);
		}
		Administrador adm = new Administrador(usercpf, senha);
		return adm;
		
	}
	public void inserirCartao(Cartao novoCartao)
	{
		
		try{
			try{
				Connection conexao = conn.Conectar();
				stm = conexao.createStatement();			
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
						
			String sql = "insert into Cartao(Numero,cvv,validade,senha,cpf_cliente)values("+novoCartao.getNumero()+",'"+novoCartao.getCvv()+"','"+novoCartao.getValidade()+"','"+novoCartao.getSenha()+"','"+novoCartao.getCpf()+"') ";
			stm.executeUpdate(sql);
			
			System.out.println("Cartao cadastrado com Sucesso!");
		}catch(SQLException ex)
		{
			System.out.println(ex);
		}
		
	}
	public Cartao getCartao(String numeroCartao)
	{
		String numero = null;
		String senha = null;
		String cvv = null;
		String validade = null;
		String cpf = null;
		try
		{
			try{
				Connection conexao = conn.Conectar();
				stm = conexao.createStatement();			
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			String sql = "select Numero,Cvv,Validade,Senha,Cpf_Cliente from Cartao WHERE Numero='"+numeroCartao+"'";
			
			ResultSet rs = stm.executeQuery(sql);
			while(rs.next())
			{	
				 numero = rs.getString("Numero");
				 cvv = rs.getString("Cvv");
				 validade = rs.getString("Validade");
				 senha = rs.getString("Senha");
				 cpf = rs.getString("Cpf_Cliente");
			}			
			
		}
		catch(SQLException ex)
		{
			System.out.println(ex);
		}
		
		Cartao cartao = new Cartao(cpf, numero, validade, cvv, senha);
		return cartao;
		
	}
	public void atualizarCliente(Cliente clienteAtualizado)
	{
		try
		{
			try{
				Connection conexao = conn.Conectar();
				stm = conexao.createStatement();			
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			String sql = "Update Cliente Set Nome = '"+clienteAtualizado.getNome()+"',Sobrenome = '"+clienteAtualizado.getSobrenome()+"',Cpf='"+clienteAtualizado.getCpf()+"',Senha='"+clienteAtualizado.getSenha()+"' WHERE Cpf='"+clienteAtualizado.getCpf()+"' ";
			stm.executeUpdate(sql);
			
			System.out.println("Cliente atualizado com Sucesso!");
		}
		catch(SQLException ex)
		{
			System.out.println(ex);
		}
	}
	public void atualizarCartao(Cartao cartaoAtualizado)
	{
		try
		{
			try{
				Connection conexao = conn.Conectar();
				stm = conexao.createStatement();			
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			String sqlexc = "Delete from Cartao where Numero='"+cartaoAtualizado.getNumero()+"'";
			//String sql = "Update Cartao Set Numero = '"+cartaoAtualizado.getNumero()+"',Cvv = '"+cartaoAtualizado.getCvv()+"',Validade='"+cartaoAtualizado.getValidade()+"',Senha='"+cartaoAtualizado.getSenha()+"',Cpf_Cliente='"+cartaoAtualizado.getCpf()+"',compras='"+cartaoAtualizado.getCompras().get(0).getValor()+"' WHERE Numero='"+cartaoAtualizado.getNumero()+"' ";
			stm.executeUpdate(sqlexc);
			String sqlins = "insert into Cartao(Numero,cvv,validade,senha,cpf_cliente,compras)values("+cartaoAtualizado.getNumero()+",'"+cartaoAtualizado.getCvv()+"','"+cartaoAtualizado.getValidade()+"','"+cartaoAtualizado.getSenha()+"','"+cartaoAtualizado.getCpf()+"','"+cartaoAtualizado.getCompras().get(0).getValor()+"')";
			stm.executeUpdate(sqlins);
			System.out.println("Cartao Atualizado com Sucesso!");
		}
		catch(SQLException ex)
		{
			System.out.println(ex);
		}
	}
	public ArrayList<Cliente> getClientes()
	{
		String nome;
		String sobrenome;
		String cpf;
		String senha;
		
		ArrayList<Cliente> Clientes = new ArrayList<Cliente>();
		try
		{
			try{
				Connection conexao = conn.Conectar();
				stm = conexao.createStatement();			
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			String sql = "Select * from Cliente";
			ResultSet rs = stm.executeQuery(sql);
			while(rs.next())
			{	
				 nome = rs.getString("Nome");
				 sobrenome = rs.getString("Sobrenome");
				 cpf = rs.getString("Cpf");
				 senha = rs.getString("Senha");
				 Cliente cliente = new Cliente(nome,sobrenome,cpf,senha);
				 Clientes.add(cliente);
			}	
		}
		catch(SQLException ex)
		{
			System.out.println(ex);
		}
		return Clientes;
	}
	
}

